package com.it.data_tree.tree.binaryTree;

/**
 * @Author: Coke
 * @DateTime: 2023/04/16/14:37
 * @注释: 翻转二叉树
 **/
public class InvertBinaryTree {
    /**
     * @作者: Coke
     * @注释: 翻转二叉树
     * @DateTime: 2023/4/16 14:38
     *
     * @param node:
     * @return Node
     */
    public static Node invertTree(Node node){
        fn(node);
        return node;
    }
    /**
     * @作者: Coke
     * @注释: 翻转二叉树具体实现逻辑
     * @DateTime: 2023/4/16 14:39
     *
     * @param node:
     * @return void
     */
    private static void fn(Node node){
        if (node == null){
            return;
        }
        // 临时存储左子节点
        Node left = node.getLeft();
        node.setLeft(node.getRight());
        node.setRight(left);
        
        // 递归调用分别翻转左子节点和右子节点
        fn(node.getLeft());
        fn(node.getRight());
    }
}
